package Stack;

import java.net.PortUnreachableException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

//用栈模拟队列
public class Stack_change_to_Queue {
//    public Queue<Integer> q1;
//    public Queue<Integer> q2;
//
//    public Stack_change_to_Queue(){
//        q1=new LinkedList<>();
//        q2=new LinkedList<>();
//    }
//
//    public void push(int val){
//        if(isEmpty()){
//            q1.offer(val);
//        }
//        if(q1.isEmpty()){
//            q1.offer(val);
//        }else{
//            q2.offer(val);
//        }
//    }
//
//    public int pop(){
//        if(isEmpty()){
//            return -1;
//        }
//
//        if(!q1.isEmpty()){
//            int size=q1.size();
//            while (size-1!=0){
//                q2.offer(q1.poll());
//                size--;
//            }
//            return q1.poll();
//        }else{
//            int size= q2.size();;
//            while(size-1!=0){
//                q1.offer(q2.poll());
//                size--;
//            }
//            return q2.poll();
//
//        }
//    }
//
//    public  int top(){
//        if(isEmpty()){
//            return -1;
//        }
//        if(!q1.isEmpty()){
//            int size= q1.size();
//            int tmp=-1;
//            while(size!=0){
//                tmp=q1.poll();
//                q2.offer(tmp);
//                size--;
//            }
//            return q1.peek();
//        }else{
//            int size= q2.size();
//            int tmp=-1;
//            while(size!=0){
//                tmp=q2.poll();
//                q1.offer(tmp);
//                size--;
//            }
//            return tmp;
//        }
//    }
//
//    public boolean isEmpty(){
//        return q1.isEmpty() && q2.isEmpty();
//    }
    public Queue<Integer> q1;
    public Queue<Integer> q2;

    public Stack_change_to_Queue(){
        q1=new LinkedList<>();
        q2=new LinkedList<>();
    }

    public void push(int val){
        if (empty()){
            q1.offer(val);
        }

        if(q1.isEmpty()){
            q1.offer(val);
        }else{
            q2.offer(val);
        }
    }

    public int pop(){
        if(empty()){
            return -1;
        }
        if(!q1.isEmpty()){
            int size= q1.size();
            while(size-1!=0){
                size--;
                q2.offer(q1.poll());
            }
            return q1.poll();
        }else{
            int size=q2.size();
            while(size-1!=0){
                size--;
                q1.offer(q2.poll());
            }
            return q2.poll();
        }
    }

    public int peek(){
        if(empty()){
            return -1;
        }
        if(!q1.isEmpty()){
            int size= q1.size();
            int tmp=-1;
            while(size!=0){
                size--;
                tmp=q1.poll();
                q2.offer(tmp);
            }
            return tmp;
        }else{
            int size=q2.size();
            int tmp=-1;
            while(size!=0){
                size--;
                tmp=q2.poll();
                q1.offer(tmp);
            }
            return tmp;
        }
    }

    public boolean empty(){
        return q1.isEmpty() && q2.isEmpty();
    }


}
